package com.rceeslca.common.validator;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.rceeslca.common.exception.ErrorCode;
import com.rceeslca.common.exception.RceesLcaException;

import java.util.List;
import java.util.Map;

/**
 * 校验工具类
 * @author rceeslca
 */
public class AssertUtils {

    public static void isBlank(String str,String... params){
        isBlank(str,ErrorCode.NOT_NULL,params);
    }


    public static void isBlank(String str,Integer code,String... params){
        if(code==null){
            throw new RceesLcaException(ErrorCode.NOT_NULL,"code");
        }
        if (StrUtil.isBlank(str)) {
            throw new RceesLcaException(code,params);
        }
    }


    public static void isNull(Object object,String... params){
        isNull(object,ErrorCode.NOT_NULL,params);
    }


    public static void isNull(Object object,Integer code,String... params){
        if(code==null){
            throw new RceesLcaException(ErrorCode.NOT_NULL,"code");
        }
        if(object==null){
            throw new RceesLcaException(code,params);
        }
    }


    public static void isArrayEmpty(Object[] array,String... params){
        isArrayEmpty(array,ErrorCode.NOT_NULL,params);
    }


    public static void isArrayEmpty(Object[] array,Integer code,String... params){
        if(code==null){
            throw new RceesLcaException(ErrorCode.NOT_NULL,"code");
        }
        if(ArrayUtil.isEmpty(array)){
            throw new RceesLcaException(code,params);
        }
    }


    public static void isListEmpty(List<?> list,String... params){
        isListEmpty(list,ErrorCode.NOT_NULL,params);
    }


    public static void isListEmpty(List<?> list,Integer code,String... params){
        if(code==null){
            throw new RceesLcaException(ErrorCode.NOT_NULL,"code");
        }
        if(CollUtil.isEmpty(list)){
            throw new RceesLcaException(code,params);
        }
    }


    public static void isMapEmpty(Map map,String... params){
        isMapEmpty(map,ErrorCode.NOT_NULL,params);
    }


    public static void isMapEmpty(Map map,Integer code,String... params){
        if(code==null){
            throw new RceesLcaException(ErrorCode.NOT_NULL,"code");
        }
        if(MapUtil.isEmpty(map)){
            throw new RceesLcaException(code,params);
        }
    }

}
